VAIVORYKŠTĖS LENTELĖ (RAINBOW TABLE)

Vaivorykštes lentelė, tai speciali paieškos lentelės versija (angl. lookup table) naudojama kriptografinių maišos funkcijų pakeitimui, kuri naudoja protingą kompromisą tarp paieškos laiko ir atminties (angl. time-memory tradeoff) lentelės mechanizmą. Vaivorykštes lentelės naudojamos slaptažodžių gavimui naudojant maišos funkcijas. Taip pat naudojamos pulti simetriškus skaičius kurių pagrindas yra atviras tekstas. Kompiuterių sistemos kurios naudoja slaptažodžius autendefikavimui turi kažkokiu tai būdu atpažinti įvesto slaptažodžio teisingumą. Pačiu paprasčiausiu sprendimo būdu iškilusios problemos yra visų prieinamų slaptažodžių sąrašo saugojimas kiekvienam vartotojui. Šio metodo minusas, kad įsilaužimo metu nesankcionuotas vartotojas žinos visus slaptažodžius. Daugiau paplitusiu variantu yra reikšmių saugojimas naudojant kriptografinę hash funkciją. Dauguma hashų greitai apskaičiuojami. Todėl įsilaužėlis gavęs priėjimą prie hashų gali greitai patikrinti slaptažodžius ar jie dar yra galiojantis, tinkami. Tam, kad taip neatsitiktų reikia naudoti ilgesnius slaptažodžius, tuo pačiu didinant slaptažodžių sąrašą. Paprastiems slaptažodžiams, kuriems nenaudota salt funkcija įsilaužėlis gali iš anksto apskaičiuoti hashų reikšmes visiems trumpiems slaptažodžiams ir išsaugoti juos lentelėje. Tokiu būdu galima surasti sutapimus ankščiau gautoje lentelėje. Kuo ilgesnis slaptažodis tuo ilgesnė lentelė, ir tam reikia daugiau atminties juos saugojimui. Alternatyviu variantu yra pirminių grandžių hasho saugojimas. Tai pareikalaus daugiau skaičiavimų slaptažodžio paieškai ir sumažins reikalingos atminties panaudojimo saugojimui. Vaivorykštės lentelės yra patobulinta hash grandžių idėja. Jos efektyviai sprendžia kolizijos problemą įvedant redukcijos funkcijas R1, R2, ...,RK. Redukcijos funkcijos yra naudojamos iš eilės, kurios susimaišo su hašavimo funkcija: H, R1, H, R2, ..., H, RK. Tokiu būdu dvi grandinės gali susilieti sutampant vienai ir tai pačiai operacijai. Todėl užtenka tikrinti ar yra kolizijos paskutines grandinių reikšmes, o tai nereikalauja papildomos atminties. Paveikslėlyje pateiktas pavyzdys hash re3xes. (Pav. 1) 1. Pirmiausia apskaičiuojamas grandies ilgis 1 nuo pirminio hasho: R3("re3xes")="rambo". Duotas slaptažodis nėra galutinis ne vienoje lentelės grandinėje. 2. Apskaičiuojama grandinės ilgis 2: R3(H(R2("re3xes")))="linux23". 3. Duotas slaptažodis surastas lentelėje. Imama grandinės pradžia (slaptažodis "passwd"). 4. Atstatoma lentelės grandinę iki tol kol bus gautas pirminis hashas „Re3xes“. 5. Ieškomas hashas surastas grandinėje. Ataka sėkminga. Slaptažodis yra „culture“.